package com.example.myday;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity { // 메인 클래스

	//public static Chronometer chrono;	// 스톱와치
	ArrayList<MyItem> timer;				//	커스텀 리스트
	ListView list;								// 리스트뷰
	protected MyItem mi;					// 리스트뷰에 출력할 항목
	MyListAdapter mAdapter;				// 리스트 어댑터

	public static String nowTime() {	// 현재시각 메소드
		String time = new String();
		Calendar cal = new GregorianCalendar();
		
		time= String.format("%d.%d.%d %d:%d ",
				cal.get(Calendar.YEAR),
				cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH),
				cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE));
		return time;
	}// 현재시각 메소드 끝
	
	AdapterView.OnItemClickListener mItemClick= new AdapterView.OnItemClickListener() {

		public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
			String msg = "Select Item = " + timer.get(arg2);
			Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
		}
		
	};
		
	
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		timer = new ArrayList<MyItem>();
		
		mAdapter = new MyListAdapter(this, R.layout.timerlist, timer);
		
		list = (ListView) findViewById(R.id.listView);
		list.setAdapter(mAdapter);
		list.setOnItemClickListener(mItemClick);
	} // onCreate 메소드 끝
	
	protected void onDestroy() {
		super.onDestroy();
		MyItem.chrono.stop();
	} // onDestroy 메소드 끝
	
	public void mOnClick(View v){ // 메인 액티비티 화면의 버튼클릭 메소드
		final LinearLayout linear;
		
		switch (v.getId()){
		case R.id.start_btn:// 새일정시작 버튼 클릭시 대화상자 띄우기
			linear = (LinearLayout) View.inflate(this, R.layout.box, null);
			new AlertDialog.Builder(this)
			.setTitle("일정 이름을 입력하세요")
			.setView(linear)
			.setPositiveButton("확인", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					EditText name = (EditText) linear.findViewById(R.id.box_name_edit);
					String txtname = name.getText().toString();
					if(txtname.length() != 0){
						mi=new MyItem(txtname, MyItem.chrono, nowTime());
						timer.add(mi);
						mAdapter.notifyDataSetChanged();
					}
				}
			})
			.setNegativeButton("취소", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					
				}
			})
			.show();
			break;
		} // 스위치문 끝
	} // mOnClick 메소드 끝
	
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

} // 메인 클래스 끝

class MyItem{ // 리스트뷰에 출력할 항목 클래스
	String name;
	static Chronometer chrono;
	String clock;
	
	MyItem(String name, Chronometer chrono, String clock){ // 생성자
		this.name = name;
		this.chrono = chrono;
		this.clock = clock;
	}
} // MyItem 클래스 끝

class MyListAdapter extends BaseAdapter{// 리스트 아답터 클래스(커스텀 리스트뷰를 위해)
	Context maincon;			
	LayoutInflater Inflater;		// 전개
	ArrayList<MyItem> arSrc;	// 어레이 리스트
	int layout;
	
	public MyListAdapter(Context maincon, int layout, ArrayList<MyItem> arSrc) {// 생성자
		this.maincon = maincon;
		this.Inflater = (LayoutInflater) maincon.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		this.arSrc = arSrc;
		this.layout = layout;
	}

	public int getCount() {
		return arSrc.size();
	}

	public Object getItem(int position) {
		return arSrc.get(position).name;
	}

	public long getItemId(int position) {
		return position;
	}

	public View getView(int position, View convertView, ViewGroup parent) {
		final int pos = position;
		if(convertView == null){
			convertView = Inflater.inflate(layout, parent, false);
		}
		TextView txt = (TextView) convertView.findViewById(R.id.timerlist_name);// 일정이름
		txt.setText(arSrc.get(position).name);
		
		MyItem.chrono = (Chronometer) convertView.findViewById(R.id.timerlist_chrono);// 타이머
		
		//MyItem.chrono.start(); //타이머 시작
		arSrc.get(pos).chrono.start();
		
		final Button btnStop = (Button) convertView.findViewById(R.id.timerlist_stop_btn);// 정지버튼
		
		final TextView txtClockstart = (TextView) convertView.findViewById(R.id.timerlist_clockstart);//현재시각
		final TextView txtClockend = (TextView) convertView.findViewById(R.id.timerlist_clockend);
		txtClockstart.setText(arSrc.get(pos).clock);//시작시간 출력
		
		btnStop.setOnClickListener(new Button.OnClickListener() {// 종료버튼 누르면
			public void onClick(View v) {
				String str = arSrc.get(pos).name+" 종료";
				Toast.makeText(maincon, str, Toast.LENGTH_SHORT).show();
				
				//MyItem.chrono.stop();//타이머 정지
				arSrc.get(pos).chrono.stop();
				
				btnStop.setText("완료");// 버튼 텍스트 변경
				txtClockend.setText(MainActivity.nowTime());// 종료시간 출력
			}
		});
		return convertView;
	} // getView 메소드 끝
} // 리스트 어댑터 클래스 끝


